This application is based on application No. H10-278782 filed in Japan, the content of which is hereby incorporated by reference.
1. Field of the Invention
The present invention relates to a program cooperative execution apparatus that has electrical appliances cooperatively perform specific operations by transferring programs to the electrical appliances via communication networks. More particularly, the present invention relates to a program cooperative execution apparatus for achieving cooperative operations among electrical appliances, such as home appliances, which each include a microprocessor having a relatively low throughput and a real memory having a relatively small capacity.
2. Background Art
There are cases where it is desirable to achieve cooperative operations among a plurality of electrical appliances that operate under the controls of their microprocessors. For instance, as broadcast stations start providing additional information, such as program schedules, in digital broadcasts, it becomes desirable for the broadcast stations to update the control programs stored in non-volatile memories of TV tuners provided in homes. Also, it is desirable for utilities, such as electric-power companies, gas companies, and hospitals, to offer new elaborate services by collecting information about the operational conditions of home appliances provided in homes via large-scale networks, such as WANs (Wide Area Networks).
One conceivable method for achieving cooperative operations among electrical appliances, such as home appliances, would be to develop new programs for achieving such cooperative operations and to download the programs into the electrical appliances which then execute the downloaded programs. However, the electrical appliances into which the programs are downloaded are not always designed using the same architecture. That is, the electrical appliances include totally different hardware or different types of microprocessors. Therefore, techniques for overcoming the differences in their architectures are required.
Virtual machines, typified by Java (TM) of JavaSoft (a division of Sun Microsystems Inc.), have been used as a technique for overcoming differences in architecture among computers connected via networks, such as the Internet. Virtual machines are programs executed on specific microprocessors (also called xe2x80x9creal machinesxe2x80x9d) and function as virtual microprocessors that sequentially interpret and execute dedicated operation codes (bytecodes) for the virtual machines. Note that a more detailed explanation of the Java is given in xe2x80x9cThe Java Virtual Machine Specificationxe2x80x9d (Tim Lindholm and Frank Yellin, pub. Addison Wesley) and in the Web page at xe2x80x9chttp://java.sun.comxe2x80x9d.
FIG. 1 shows a conventional computer network for having different types of computers perform cooperative operations by providing the computers with common programs that can be executed by virtual machines of the computers. An application program 130 for achieving a cooperative operation is written on a development computer 100 in the Java language and is converted into Java bytecode 131a by a Java compiler 101. The Java bytecode 131a is sent to another computer 120 whose architecture is different from that of the development computer 100 via a network adaptor 102, a network 110, and a network adaptor 123. The sent bytecode 131c is interpreted and is executed by a Java virtual machine 121 that operates on a real machine 122 of the computer 120. In this manner, common programs (Java bytecodes) can be executed as they are by computers having different architectures through the intermediary operations of Java virtual machines.
Cooperative operation systems that involve home appliances can be realized by providing Java virtual machines used in computer networks in the home appliances. First, Java virtual machines are implemented into all home appliances that need to perform cooperative operations. Java bytecodes are provided to the home appliances from other apparatuses via a communications satellite, a network constructed in the home, or the like, and the downloaded Java bytecodes are executed by the Java virtual machines in the home appliances.
However, when Java virtual machines are applied to home appliances as they are, there are the following problems concerning the execution speed of programs and the memory capacities of the home appliances.
Virtual machines are a technique for realizing the functions of microprocessors and OSs (Operating Systems) using hierarchical software. Therefore, the execution of Java bytecode by a virtual machine generally takes much longer time than the execution of a program composed of native code that can be directly executed by an OS or real machine. This may not be significant for computers provided with high-throughput microprocessors, such as INTEL x86, MOTOROLA POWER PC, and SUN SPARC, but constitutes a significant problem for home appliances that include low-throughput microprocessors due to various factors such as cost.
Also, Java bytecode is designed with the assumption that it will be delivered via an open network (i.e., a network which is not limited to specific users or any particular purpose), such as the Internet, and so may be executed in various environments. Therefore, Java bytecode is much larger than a general program that has the same content as the Java bytecode. Consequently, devices that execute Java bytecode require real memories with large capacities.
In more detail, Java bytecode has a structure where functions and variables are cross-referenced using a name area called a constant pool. This structure allows Java bytecode to safely run without obstructing other applications written by other programmers. That is, the name area is used to prevent the Java bytecode from obstructing other applications and operations of systems. The name area is generally at least as large as twice the code body of the Java bytecode. While this may not matter for computers that are equipped with at least 16MB of RAM, it is a significant program for home appliances where memory capacities needs to be limited due to various factors such as cost.
In view of the stated problems, the object of the present invention is to provide a program cooperative execution apparatus that can also be applied to electrical appliances, such as home appliances, which each include a microprocessor having a low throughput and a real memory having a small capacity. That is, the object of the present invention is to provide a program cooperative execution apparatus that realizes cooperative operations among various types of electrical appliances by sending architecture-independent programs to the electrical appliances.
The stated object is achieved by the program cooperative execution apparatus for having a plurality of electrical appliances perform cooperative operations specified by programs sent from a transmitting device, each of the plurality of electrical appliances being provided with a processor, the apparatus being connected to the transmitting device via a first communication channel and being connected to the plurality of electrical appliances via a second communication channel, the program cooperative execution apparatus including: a receiving unit for receiving a first bytecode for a first virtual machine, the first bytecode being a program sent from the transmitting device via the first communication channel and specifying a cooperative operation; an appliance specifying unit for specifying an electrical appliance that should execute the received first bytecode, out of the plurality of electrical appliances; a converting unit for converting the received first bytecode into program code for a processor provided in the specified electrical appliance; and a distributing unit for distributing the program code generated by the converting unit to the specified electrical appliance via the second communication channel. With this construction, the program cooperative execution apparatus of the present invention not only, functions as a relay center of the program sent from the transmitting apparatus but also converts the sent program into a program code for a target electrical appliance and transfers the program code to the target electrical appliance. Therefore, the program cooperative execution apparatus of the present invention can also be applied to electrical appliances, such as home appliances, which each include a microprocessor having a low throughput and a real memory having a small capacity.
Here, the processor provided in each of the plurality of electrical appliances may be a real machine, the converting unit may convert the received first bytecode into native code of a real machine provided in the specified electrical appliance, and the distributing unit may distribute the native code generated by the converting unit to the specified electrical appliance via the second communication channel. With this construction, it is enough for target electrical appliances to have a capability for executing their native codes. Therefore, the electrical appliances do not need to include virtual machines which are each a large program.
Here, the receiving unit may receive header information together with the first bytecode, the header information relating to a destination of the received first bytecode, and the appliance specifying unit may specify the electrical appliance according to the header information. With this construction, the header information sent from the transmitting apparatus specifies a target electrical appliance that needs to perform a cooperative operation. As a result, the transmitting apparatus can specify the target electrical appliance with reliability.
Here, the converting unit may include: a plurality of conversion tables which each correspond to one of the plurality of electrical appliances, each conversion table showing which instructions in native codes of a real machine of a corresponding electrical appliance correspond to each instruction in first bytecodes; and a code converting unit for converting the received first bytecode into the native code of the real machine provided in the specified electrical appliance by referring to a conversion table corresponding to the specified electrical appliance. Each conversion table to corresponding to one of the plurality of electrical appliances shows correspondence between first bytecodes and native codes of the microprocessor of the electrical appliance. Because first bytecodes are converted into native codes only by referring to the conversion table, the conversion processing can be performed at high speed and the maintenance of the conversion table, such as the update of the conversion table and the addition of a new table, can be performed without difficulty.
Here, the processor provided in each of the plurality of electrical appliances may be a second virtual machine, the converting unit may convert the received first bytecode into a second bytecode for a second virtual machine provided in the specified electrical appliance, and the distributing unit may distribute the second bytecode generated by the converting unit to the specified electrical appliance via the second communication channel. With this construction, even though a target electronic appliance includes a virtual machine that is different from the first virtual machine for which the first bytecode is designed, the target electronic appliance performs the same operation as the case where the first bytecode is executed by the first virtual machine. Therefore, a program cooperative execution apparatus that is suitable for electrical appliances, such as home appliances, which include low-throughput microprocessors and memories with small capacities are realized by designing new virtual machines which can be executed by the electrical appliances.
Here, each first bytecode for the first virtual machine may include additional information that is used to dynamically link a plurality of program modules included in the first bytecode, and the converting unit may generate the second bytecode by linking the plurality of program modules according to the additional information included in the received first bytecode, where the second bytecode does not include the additional information. With this construction, the second bytecode downloaded into a target electrical appliance does not include lengthy link information, such as a constant pool, that is added to conventional Java bytecode. Therefore, it is enough for the target electrical appliance to include a memory having a relatively small capacity and a small virtual machine that does not include a dynamic link function.
Here, the first communication channel may be an open network that is open to any users, and the second communication channel may be a closed network that is limited to specific users who meet a certain condition. With this construction, the secure delivery of programs via the second channel does not need to be strictly ensured, in comparison with the program delivery via the first channel. Therefore, the second channel is suitable for the transfer of bytecodes whose sizes are reduced. Accordingly, it is enough for each electrical appliance to include a small virtual machine that only has basic functions and a real memory with a relatively small capacity. As a result, a program cooperative execution apparatus that is suitable for home appliances which each have a low-throughput microprocessor and a real memory having a small capacity is realized by connecting the home appliances to a closed network, such as a home appliance network.
As described above, the program cooperative execution apparatus of the present invention realizes cooperative operations among electrical appliances provided with low-throughput CPUs as well as among high-performance computers, such as work stations and personal computers, by transferring common programs (Java bytecodes) to the electrical appliances. Because the program cooperative execution apparatus of the present invention allows program resources to be easily shared by electrical appliances, the present invention has great practical uses.